import axios, { AxiosResponse } from 'axios';
import { ElMessage } from 'element-plus'

// 枚举
enum MSGS {
  "操作成功" = 200,
  "密码错误" = 401,
  "账号错误",
  "请求异常"
}

// 创建HTTP实例
const $request = axios.create({
  baseURL: "https://www.fastmock.site/mock/323354e56ef21147c3f550e18435baa1/api",
  timeout: 2000,
  headers: {
    "Content-Type": "application/json;charset=utf-8"
  }
})

// 请求拦截器
$request.interceptors.request.use(config => {
  config.headers = config.headers || {}
  // 获取本地存储中的token数据
  const token = localStorage.getItem('token')
  // 如果有token数据，则添加到请求头上
  if (token) config.headers.token = token
  return config
})


// 响应拦截器
$request.interceptors.response.use((res: AxiosResponse) => {
  // 获取响应状态码
  const code: number = res.data.code
  // 如果响应失败
  if (code !== 200) {
    // 提示用户
    ElMessage.error(MSGS[code])
    // 返回错误信息
    return Promise.reject(res.data)
  }
  return res.data
}, err => {
  console.log(err);
})

export default $request


